/**
 * 发送get异步请求
 * @param {string} url  请求地址
 * @param {string} params 请求参数
 * @param {string} dataType 类型
 * @param {function} headerFn 请求头
 * @returns Promise 成功、失败的数据
 */

 function get(url,params,dataType = 'json',headerFn = null) {

    return new Promise((resolve,reject)=>{
            // 第一步：创建xhr对象
        const xhr = new XMLHttpRequest()
        // 第二部：监控请求状态
        xhr.onreadystatechange = function () {
            //判断后端数据
            if(xhr.readyState === 4){
                //判断状态
                if(xhr.status ===200){
                    //获取后端数据
                    let res = xhr.responseText
                    switch (dataType) {
                        case json:
                            res = JSON.parse(res)
                            break;
                    
                        default:
                            break;
                    }
                    //保存成功数据
                    resolve(res)

                } else {
                    //保存失败的数据
                    reject(xhr.status)
                }
            }
        }
        // 第三步：设置请求方式和地址
        xhr.open('get',`${url}?${params}`)

        if(headerFn) headerFn(xhr)
        // 第四步：发送请求
        xhr.send(null)
    })

}





/**
 * 发送post异步请求
 * @param {string}  url 请求地址
 * @param {string}  params 请求参数
 * @param {string} dataType 类型
 * @param {string} headerFn  请求头
 * @returns Promise 成功、失败的数据
 */

 function post (url,params,dataType = 'json',headerFn = null) {
     return new Promise((resolve,reject)=>{
         // 第一步：创建xhr对象
        const xhr = new XMLHttpRequest()
        // 第二部：监控请求状态
        xhr.onreadystatechange = function () {
            //判断后端数据
            if(xhr.readyState === 4){
                //判断状态
                if(xhr.status ===200){
                    //获取后端数据
                    let res = xhr.responseText
                    switch (dataType) {
                        case 'json':
                            res = JSON.parse(res)
                            break;
                    
                        default:
                            break;
                    }
                    //保存成功的数据
                    resolve(res)

                } else {
                    //保存失败的数据
                    reject(xhr.status)
                }
            }
        }
        // 第三步：设置请求方式和地址
        xhr.open('post',url)
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
        if(headerFn) headerFn(xhr)
        // 第四步：发送请求
        xhr.send(params)
     })
}